SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

CREATE PROCEDURE [dbo].[SP_CONV_MONE_Q05]  
/*------------------------------------------------------*/    
/*---- Empresa           : OFISIS S.A.              ----*/    
/*---- Cliente           : OFISIS S.A.              ----*/    
/*---- Nombre FU         : SP_CONV_MONE_Q05         ----*/    
/*---- Desarrollado por  : PERCY GARCIA             ----*/    
/*---- Fecha Creaci?n    : 10/02/2003               ----*/    
/*---- Base de Datos     : SLQ Server               ----*/    
/*---- Versi?n           : 8.0                      ----*/    
/*------------------------------------------------------*/    
/*---Modificado 1 por     :  PERCY GARCIA           ----*/  
/*---Fecha Modificaci?n   :  20/02/2004             ----*/  
/*---Detalle Modificaci?n :  UTLIZADO EN REGISTRO DE COMPRAS Y VENTAS ----*/  
/*------------------------------------------------------*/    
/*--- Drop PROCEDURE SP_CONV_MONE_Q05      ----*/  
/*--- Grant All on SP_CONV_MONE_Q05 To Public     ----*/  
/*--- SP_CONV_MONE_Q05 '01','LIB',1,'PAC','COM',0.64,'2002/11/15',00000,0 ONV OUTPUT---*/  
/*--- SP_CONV_MONE_Q05 '01','SOL','EUR','PAC','COM',1,'2003/02/07',1500,0  ONV OUTPUT---*/  
/*------------------------------------------------------*/    
  @ISCO_EMPR            TD_VC_002,  
  @ISCO_MONE_ORIG TD_VC_003,  
  @ISCO_MONE_DEST       TD_VC_003,  
  @ISCO_MONE_FACT       TD_VC_003, -- MONEDA DEL FACTOR INGRESADO  
  @ISTI_CAMB_0001 TD_VC_003,  
  @ISTI_CAMB_0002 TD_VC_003,  
  @INFA_CAMB_0001       TD_NU_015_006,   
  @IDFE_CAMB  TD_DT_001,  
  @INIM_ORIG   TD_NU_016_004,  
  @ISTI_ORIG            TD_VC_001,          
  @ONIM_CONV            TD_NU_016_004 OUTPUT  
    
AS  
Begin  
  Declare  
 @VSCO_MON1       TD_VC_003,  
  @VSCO_MONE_BAS1  TD_VC_003,  
  @VSTI_OPE1       TD_VC_001,  
  @VSCO_MON2       TD_VC_003,  
  @VSCO_MONE_BAS2  TD_VC_003,  
  @VSTI_OPE2       TD_VC_001,  
  @VNFA_CAMB_0001  TD_NU_015_006,  
  @VNFA_CAMB_0002  TD_NU_015_006  
  
  ---- Verificamos si ambas monenas son iguales  
  If @ISCO_MONE_ORIG !=  @ISCO_MONE_DEST  
  Begin  
    ----  Recupero monedas  
    Select @VSCO_MON1 = CO_MON1,  
    @VSCO_MONE_BAS1 = CO_MONE_BAS1,  
           @VSTI_OPE1 = TI_OPE1,  
    @VSCO_MON2 = CO_MON2,  
           @VSCO_MONE_BAS2 = CO_MONE_BAS2,  
    @VSTI_OPE2 = TI_OPE2  
    From   TMCONV_MONE   
    Where  CO_MONE_ORIG   = @ISCO_MONE_ORIG  
    And    CO_MONE_DEST   = @ISCO_MONE_DEST   
  
    ---- Solo convierte para Paso 1  
    If @VSCO_MON2 Is Null and @INIM_ORIG > 0 And @ISCO_MONE_FACT = @VSCO_MON1    
    Begin  
  
      If @INFA_CAMB_0001 Is Not NULL  
       Begin   
        Select @VNFA_CAMB_0001 = @INFA_CAMB_0001  
       End   
     Else  
      Begin  
        Select @VNFA_CAMB_0001 =   
           Case  @ISTI_CAMB_0001  
             When  'COM' Then FA_CMPR_OFIC  
             Else   FA_VNTA_OFIC   
    End   
        From    TCFACT_CAMB  
        Where   CO_MONE      = @VSCO_MON1  
        And     CO_MONE_BASE = @VSCO_MONE_BAS1  
        And     FE_CAMB      = @IDFE_CAMB        
      End  
  
      If @VNFA_CAMB_0001 Is Null Or @VNFA_CAMB_0001 = 0  
         Select @VNFA_CAMB_0001 = 1  
  
      If @VSTI_OPE1 = 'M'  
        Select @ONIM_CONV  =  Round(@INIM_ORIG * @VNFA_CAMB_0001, 2)  
      Else  
        Select @ONIM_CONV  =  Round(@INIM_ORIG / @VNFA_CAMB_0001, 2)  
    End   
  
    ---- Convierte cuando tiene Paso 1 y Paso 2  
    If @VSCO_MON1 is not null and @VSCO_MON2 is not null and @INIM_ORIG > 0 and @INFA_CAMB_0001 >0  
    Begin  
  
     If @ISCO_MONE_FACT = @VSCO_MON1   
      Begin   
        Select @VNFA_CAMB_0001 = @INFA_CAMB_0001  
      End   
     Else    
      Begin   
      Select @VNFA_CAMB_0001 =   
           Case  @ISTI_CAMB_0001  
             When  'COM' Then FA_CMPR_OFIC  
             Else   FA_VNTA_OFIC   
    End   
      From    TCFACT_CAMB  
      Where   CO_MONE      = @VSCO_MON1  
      And     CO_MONE_BASE = @VSCO_MONE_BAS1  
      And     FE_CAMB      = @IDFE_CAMB        
      End    
  
      If @VNFA_CAMB_0001 Is Null Or @VNFA_CAMB_0001 = 0  
         Select @VNFA_CAMB_0001 = 1  
  
      If @VSTI_OPE1 = 'M'  
        Select @ONIM_CONV  =  Round(@INIM_ORIG * @VNFA_CAMB_0001, 2)  
      Else  
        Select @ONIM_CONV  =  Round(@INIM_ORIG / @VNFA_CAMB_0001, 2)  
  
      If @ISCO_MONE_FACT = @VSCO_MON2  
      Begin   
        Select @VNFA_CAMB_0002 = @INFA_CAMB_0001  
      End   
      Else    
      Begin   
  
      Select @VNFA_CAMB_0002 =   
           Case  @ISTI_CAMB_0002  
             When  'COM' Then FA_CMPR_OFIC  
             Else   FA_VNTA_OFIC   
    End   
      From    TCFACT_CAMB  
      Where   CO_MONE      = @VSCO_MON2  
      And     CO_MONE_BASE = @VSCO_MONE_BAS2  
      And     FE_CAMB      = @IDFE_CAMB        
      End   
  
        If @VNFA_CAMB_0002 Is Null Or @VNFA_CAMB_0002 = 0  
          Select @VNFA_CAMB_0002 = 1  
  
        If @VSTI_OPE2 = 'M'  
          Select @ONIM_CONV  =  Round(@ONIM_CONV * @VNFA_CAMB_0002, 2)  
        Else  
          Select @ONIM_CONV  =  Round(@ONIM_CONV / @VNFA_CAMB_0002, 2)  
      End  
    ---- Si importe original es 0  
    If @INIM_ORIG = 0  
 Select @ONIM_CONV = 0  
    End  
  
  If @ISCO_MONE_ORIG =  @ISCO_MONE_DEST  
 Select @ONIM_CONV  =  Round(@INIM_ORIG, 2)  
  
  If @ISTI_ORIG = 'A'  
     Select Round(@ONIM_CONV, 2)  
End  
  
Return  
/*----------------fin Funcion---------------------------*/  
  


GO
